/*对axios进行二次封装 */
//导入axios
import axios from "axios";

//引入Vuex的store文件
import store from '@/store'

//新建一个 axios 实例
const instance = axios.create({
    baseURL: "/api",/* vue.config文件的跨域配置 */
    timeout: 5000
})

// 添加请求拦截器
instance.interceptors.request.use(config => {
    console.log('请求拦截器', config);
    // 在发送请求之前做些什么

    //如果存在token在headers里携带请求头
    if (localStorage.getItem('x-auth-token')) {
        config.headers['x-auth-token'] = localStorage.getItem('x-auth-token')
    }

    return config
}, error => {
    // 对请求错误做些什么
    return Promise.reject(error)
})

// 添加响应拦截器
instance.interceptors.response.use(res => {
    console.log('响应拦截器', res);
    // 对响应数据做点什么

    /* 返回数据code 不为0的情况统一处理 */
    let res_data = res.data
    if (res_data.code != 0 && res_data.code != 407 && res_data.code != 400) {
        //把信息给提示框
        store.dispatch('ToastStatus/asyncChangeIsShowToast', {
            msg: res_data.message,
            type: "danger"
        })
        return false
    }
    return res_data
}, error => { //这里抛出异常，相当于请求之后的catch方法
    // 对响应错误做点什么

    //把错误信息给提示框
    store.dispatch('ToastStatus/asyncChangeIsShowToast', {
        msg: error,
        type: "danger"
    })
    return Promise.reject(error)
})

export default instance